#include "stm32f10x.h"                  // Device header


//PWM初始化
/*1、开启定时器时钟与GPIO时钟
  2、配饰时基单元
	3、配置输出比较
	4、配置GPIO复用功能
	5、启启启。。。动

*/
void PWM_Init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启APB1时钟，因为TIMER2是在APB1总线上的
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	/*使用重映射
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//开启AFIO时钟
	*/
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOA ,&GPIO_InitStructure);
	
	
	TIM_InternalClockConfig(TIM2); //选择时基单元驱动时钟，这里选择内部时钟，也可以不写，因为定时器上电后默认调用内部时钟
	
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//结构体
	TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;//一分频
	TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式
	TIM_TimeBaseInitStructure.TIM_Period= 100-1 ;      //自动重装器
	TIM_TimeBaseInitStructure.TIM_Prescaler=720-1;     //PSC预分频器的值,分频系数
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;   //重复计数器的值,在高级计数器里面才有
	
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);//时基单元初始化完成
	
 
 //输出比较初始化
 TIM_OCInitTypeDef TIM_OCInitstructure;
 TIM_OCStructInit(&TIM_OCInitstructure);
 TIM_OCInitstructure.TIM_OCMode=TIM_OCMode_PWM1;     //输出比较模式
 TIM_OCInitstructure.TIM_OCPolarity=TIM_OCPolarity_High;   //输出比较极性，为高，ref就不翻转，为低则翻转
 TIM_OCInitstructure.TIM_OutputState=TIM_OutputState_Enable;
 TIM_OCInitstructure.TIM_Pulse=0;    //设置CCR
 TIM_OC2Init(TIM2,&TIM_OCInitstructure);//启动对应CH，可以自己查看GPIO复用功能
 
	
	TIM_Cmd(TIM2,ENABLE);//开启定时器
	
	
}
//占空比修改
void PWM_SetCompare1(uint16_t Compare)
{
	TIM_SetCompare2(TIM2,Compare);
	
}